/*
 * @Descripttion:
 * @Author: wayde
 * @Date: 2021-10-30 13:14:18
 */
const path = require("path");
const fs = require("fs");
const mime = require("mime");
const zlib = require("zlib");

function readStaticFile(req,res,filePathName){
    // content-type ==>MDN  『 MIME 嗅探 』
    // text/plain : 是文本文件默认值。意思是 未知的文本文件 ，浏览器认为是可以直接展示的.
    // text/html : 是所有的HTML内容都应该使用这种类型.
    // image/png : 是 PNG 格式图片的 MIME 类型
    const ext = path.parse(filePathName).ext
    const mimetype = mime.getType(ext)

    if(ext){
        fs.readFile(filePathName,(err,data)=>{
            if(err){
                res.writeHead(404, { "Content-Type": "text/plain" });
                res.write("404 - NOT FOUND");
                res.end();
            }else{
                res.writeHead(200,{"Content-Type": mimetype})
                res.write(data)
                res.end()
            }
        })
        return true
    }else{
        return false
    }
}
// function readStaticFile(req, res, filePathName) {
//   const ext = path.parse(filePathName).ext;
//   const mimetype = mime.getType(ext);
//   try{
//     if (ext) {
//         res.setHeader("Content-Type",mimetype);
//         let encoding = getEncoding(req, res);
//         if (encoding) {
//             console.log(1);
//        .pipe(encoding).pipe(res);
//         } else {
//           fs.createReadStream(filePathName).pipe(res);
//         }
//       } else {
//         res.writeHead(404, { "Content-Type": "text/plain" });
//         res.write("404 - txt no exist");
//         res.end();
//       }
//   }catch(e){
//     sendError(e,req,res)
//   }

// }

// function sendError(err, req, res) {
//     res.statusCode = 500;
//     res.end(`${err.toString()}`);
// }

function getEncoding(req, res) {
  let acceptEncoding = req.headers["accept-encoding"];
  if (acceptEncoding.match(/\bgzip\b/)) {
    res.setHeader("Content-Encoding", "gzip");
    return zlib.createGzip();
  } else if (acceptEncoding.match(/\bdeflate\b/)) {
    res.setHeader("Conetnt-Encoding", "deflate");
    return zlib.createDeflate();
  } else {
    return null;
  }
}

module.exports = readStaticFile;
